查看原文
其他

华为鸿蒙系统用的什么语言?和安卓有什么区别?

21CTO 2020-11-17

自从华为被禁后,多家美国公司纷纷宣布暂停合作的消息。其中,谷歌公司宣布暂停部分功能对华为终端的开放,引发了国内外媒体的广泛关注。


随后,有消息称华为将要推出自家鸿蒙OS操作系统,该系统将会打通手机、平板、电脑、可智能穿戴和汽车等领域的全部壁垒,或将成为苹果iOS、谷歌Android和微软Windows之外的超级系统。


更有消息指出,华为鸿蒙OS将会于6月24日香港发布。但随后,华为公司出面辟谣,证实该消息为假。虽是如此,但华为鸿蒙OS的推出,基本上是板上钉钉。在行业内人士看来,四月份方舟编译器的推出,便已经奏响了华为自主操作系统的"阵前曲"。


根据华为公布的方舟编译器资料 可以推测鸿蒙系统是用C、C++语言编写。


先来看华为公布的方舟编译器原理图




从上面的华为方舟编译器资料可知:


1、鸿蒙系统和方舟编译器的思路应该是一样:直接使用机器语言编写 app,取消安卓系统的 ART 虚拟机,直接编译为二进制机器码;


这样的好处是:不需要中转,执行速度快;劣势是:必须要有大量的静态方案、内存空间要求更高。


2、由于是用 C、C++ 进行编写 app,对软件开发人员要求高,提高了建设生态链的技术门槛。


3、由于华为目前有芯片、系统等软件和硬件基础,华为鸿蒙系统若走苹果 iOS 封闭系统模式,虽然路途漫长但前途可观。


但华为主业是通讯,并非手机,这和苹果主业是手机的特点不同。华为没有办法全身心投入开发封闭式的鸿蒙系统。


华为因为手机并非主业,只能走开源之路。但作为手机制造商的华为,如何让其他手机制造商使用的系统,将是一个巨大的难题。


毕竟没有一个手机制造商去帮助一个依是裁判员又是运动员的手机系统发展,导致自己的市场份额缩减。

可以预见的鸿蒙系统

1、除华为外其他国产手机公司不会安装或重视。


由于google禁售的是华为,对于小米等其他国产手机公司不禁售,因此小米等其他国产公司不会安装鸿蒙系统,即便出于公共形象的压力而安装,也不会真正重视,最多就是做个样子。


反正,内斗内行吧——除非华为让渡鸿蒙系统的控制权!


2、鸿蒙系统即便能够兼容安卓应用,在过了新鲜期之后,如何提升用户体验度是关键。


如果像阿里 OS 一样可以远程删除用户的 app,就直接死翘翘吧。


保持软件开发商的利益和用户体验度的平衡,是鸿蒙系统能否生存的关键。开发商没有得到利益,不会开发鸿蒙系统的app;用户体验度差,用户就不会用鸿蒙系统。


鸿蒙、安卓、iOS 的共同祖先是 UNIX,而 UNIX 是 C 语言开发的,“鸿蒙”操作系统必然是 C 语言编写的。


“鸿蒙”操作系统提供给应用开发商的开发工具很可能是 Java,下文具体说一说。


“鸿蒙”操作系统的组成

华为的“鸿蒙”操作系统由四部分部分组成:Linux 内核+麒麟处理器的运行库+编译器+虚拟机。


Linux内核:Linux 内核是开源的,由 Linux 内核团队维护,而 Linux 的内核采用了 C 语言,而不是很多认为的 C++,C 语言的执行效率要远高于面向对象的编程语言 C++。


运行库:运行库在 Linux 基础上,针对不同的处理器,运行库需要进行适配。


比如麒麟处理器指令集和高通处理器的指令集可能存在差异,不是完全相同,那么就存在一个适配的问题,而程序库通常情况下采用 C 语言编写。



虚拟机:虚拟机用于沟通操作系统和硬件,是两者之间的桥梁,屏蔽了不同系统之间的差异性,可以实现跨平台,同时很大程度上降低了应用开发难度。目前,普遍使用的虚拟机是 Java 虚拟机。


编译器:编译器将Java编写的代码转换成虚拟机机器码或者硬件可以直接认识的机器码。华为的方舟编译器实现了代码的静态编译,相比传统安卓应用流畅度提升了 60%。

“鸿蒙”和安卓的差异

鸿蒙操作系统兼容安卓应用,那么“鸿蒙”操作系统和安卓有什么区别呢?


1)架构不同


鸿蒙操作系统是微内核设计,而安卓系统是基于linux的宏内核设计,相比来说,微内核开发难度大,但是系统稳定性高。




宏内核,内核包含了操作系统绝大多数的功能,而且这些功能和模块具有最高的权限,好处是系统开发难度低,但是各模块具有最高权限,一个模块出错,整个系统崩溃,这也是安卓系统容易崩溃的原因。


微内核,内核仅包括了操作系统必要的功能模块(任务管理、内存分配等),其他模块不具有最高权限,系统稳定性得到了提升。


2)跨平台支持


鸿蒙操作系统同时支持手机、电脑、智能穿戴设备、智能家居,形成一个无缝的、统一的操作系统,并且兼容所有的安卓应用


这个操作系统与谷歌正在研发的 Fuchsia 思路一致,是为 5G 和物联网时代准备的,华为的“鸿蒙”操作系统提前发布,可能给华为一个反客为主的机会,按照余承东的说法“塞翁失马,焉知非福”。


总之,华为的“鸿蒙”操作系统,底层(Linux内核、运行库)是用 C 语言编写的,虚拟机可能采用了 C 或者 C++ 语言;面向应用开发商的开发环境很可能是 Java 语言。


你对鸿蒙系统有什么关心或吐槽?欢迎文底精彩留言。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存